/*
 * Cinta5Slots.h
 *
 *  Created on: Nov 19, 2013
 *      Author: m
 */

#ifndef CINTA5SLOTS_H_
#define CINTA5SLOTS_H_

#include "Cinta.h"

class Cinta5Slots
{
protected:
    Cinta<5> m_cinta;
    bool m_productorUsando;
    bool m_productorEsperando;
    bool m_consumidorUsando;
    bool m_consumidorEsperando;

public:
    Cinta5Slots() :
        m_cinta(),
        m_productorUsando( false ),
        m_productorEsperando( false ),
        m_consumidorUsando( false ),
        m_consumidorEsperando( false )
    {
    }

    ~Cinta5Slots()
    {
    }

    bool productorUsando()
    {
        return m_productorUsando;
    }

    bool productorEsperando()
    {
        return m_productorEsperando;
    }

    void setProductorUsando( bool v )
    {
        m_productorUsando = v;
    }

    void setProductorEsperando( bool v )
    {
        m_productorEsperando = v;
    }

    bool consumidorUsando()
    {
        return m_consumidorUsando;
    }

    bool consumidorEsperando()
    {
        return m_consumidorEsperando;
    }

    void setConsumidorUsando( bool v )
    {
        m_consumidorUsando = v;
    }

    void setConsumidorEsperando( bool v )
    {
        m_consumidorEsperando = v;
    }

    bool tieneElementos()
    {
        return m_cinta.tieneElementos();
    }

    bool depositar( const ElementoProduccion& e )
    {
        return m_cinta.depositar( e );
    }

    bool avanzar()
    {
        return m_cinta.avanzar();
    }

    ElementoProduccion quitar()
    {
        return m_cinta.quitar();
    }

    int contarElementos()
    {
        return m_cinta.contarElementos();
    }
};

#endif /* CINTA5SLOTS_H_ */
